C语言跨平台开发与移植实战

📚 共计 30 章节
01
C语言跨平台概述
什么是跨平台、为什么需要跨平台、跨平台开发的挑战与机遇。
概念导论
02
开发环境搭建
Windows (MSVC/MinGW)、Linux (GCC)、macOS (Clang) 三大平台环境配置。
环境工具链
03
预处理与宏
跨平台宏定义 (#ifdef, #ifndef)、平台检测宏、条件编译实战。
预处理器
04
数据类型与字节对齐
不同平台下的基本数据类型大小、字节序 (Endianness)、对齐与填充。
内存对齐
05
文件操作与路径处理
跨平台文件API (fopen, open)、路径分隔符处理、文件锁。
文件IO路径
06
动态库与静态库
Windows (DLL, LIB) 与 Linux/macOS (so, a, dylib) 的创建与调用。
链接
07
线程与同步
POSIX threads (pthread) 与 Windows Threads 的抽象与封装。
并发同步
08
网络编程基础
Socket API 的跨平台封装 (Berkeley sockets vs Winsock)。
网络Socket
09
内存管理
malloc/free 的跨平台行为、内存对齐分配 (aligned_alloc)。
内存对齐
10
时间与日期
time.h 与平台特定API、高精度计时器 (QueryPerformanceCounter vs clock_gettime)。
时间计时
11
信号处理
POSIX 信号与 Windows 结构化异常处理 (SEH) 的对比与封装。
信号异常
12
国际化与本地化
字符编码 (ASCII, UTF-8, UTF-16)、宽字符处理 (wchar_t)。
编码i18n
13
命令行参数解析
跨平台处理 argc/argv、getopt 的移植与替代。
CLI参数
14
环境变量操作
getenv/setenv 与 Windows GetEnvironmentVariable/SetEnvironmentVariable。
环境系统
15
系统信息获取
操作系统版本、CPU信息、内存信息的跨平台获取。
系统硬件
16
进程管理
fork/exec 与 CreateProcess 的抽象、进程间通信 (pipe, socketpair)。
进程IPC
17
正则表达式
POSIX regex 与 PCRE 的跨平台使用。
正则文本
18
序列化与反序列化
JSON (cJSON)、Protocol Buffers (nanopb) 的跨平台实践。
序列化数据交换
19
日志系统设计
跨平台日志库的架构、日志级别、文件滚动。
日志调试
20
单元测试框架
Unity, CMocka, Criterion 的跨平台配置与使用。
测试质量
21
构建系统
CMake 跨平台构建、Makefile 与 Visual Studio 项目转换。
构建CMake
22
包管理
vcpkg, Conan, Homebrew 在C语言项目中的应用。
包管理依赖
23
图形界面移植
GTK, SDL, Nuklear 的跨平台GUI开发。
GUI图形
24
嵌入式C移植
ARM Cortex-M 与 RISC-V 的交叉编译与移植要点。
嵌入式交叉编译
25
性能优化与平台差异
CPU缓存、SIMD指令集 (SSE/NEON) 的跨平台适配。
优化SIMD
26
安全编程
缓冲区溢出、格式化字符串漏洞的跨平台防护。
安全漏洞
27
错误处理与断言
errno, perror, assert 的跨平台行为与自定义。
错误断言
28
代码风格与规范
跨平台项目代码组织、命名规范、注释规范。
风格规范
29
持续集成
GitHub Actions, GitLab CI, Jenkins 配置跨平台编译与测试。
CI自动化
30
综合实战
从零构建一个跨平台命令行工具 (如文件搜索工具)。
项目实战